home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / TRISSRC.ZIP / hiscore.c < prev    next >
C/C++ Source or Header  |  1996-05-19  |  6KB  |  346 lines

  1. /*********************************/
  2. /* PCTRIS - Highscoreroutinen    */
  3. /*********************************/
  4.  
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <dn.h>
  8. #include <key.h>
  9. #include "DEFS.H"
  10. #include "VARS.H"
  11.  
  12. #define HSCREINTRAEGE 10
  13.  
  14. /* globale Variablen */
  15. struct
  16. {
  17.     int punkte;
  18.     int level;
  19.     int reihen;
  20.     char name[30];
  21. } hscr_eintrag[HSCREINTRAEGE];
  22.  
  23. BOOLEAN key_pressed;
  24.  
  25. /* Funktionsprototypen */
  26. void highscore(void);
  27.  
  28. /*  Funktionen */
  29. void highscore_load(void)
  30. {
  31.     FILE *datei;
  32.     int i;
  33.  
  34.     datei = fopen("HISCORE.DAT", "rb");
  35.     if(!datei)
  36.     {
  37.         /* neu erzeugen */
  38.         datei = fopen("HISCORE.DAT", "wb");
  39.         for(i = 0; i < HSCREINTRAEGE; i++)
  40.         {
  41.             hscr_eintrag[i].punkte = 1000 - i * 50;
  42.             hscr_eintrag[i].level = 0;
  43.             hscr_eintrag[i].reihen = 0;
  44.             strcpy(hscr_eintrag[i].name, "NOONE");
  45.         }
  46.         fwrite(hscr_eintrag, sizeof(hscr_eintrag[0]), HSCREINTRAEGE, datei);
  47.         fclose(datei);
  48.     }
  49.     else
  50.     {
  51.         fread(hscr_eintrag, sizeof(hscr_eintrag[0]), HSCREINTRAEGE, datei);
  52.         fclose(datei);
  53.     }
  54. }
  55.  
  56. void highscore_save(void)
  57. {
  58.     FILE *datei;
  59.  
  60.     datei = fopen("HISCORE.DAT", "wb");
  61.     if(datei)
  62.     {
  63.         fwrite(hscr_eintrag, sizeof(hscr_eintrag[0]), HSCREINTRAEGE, datei);
  64.         fclose(datei);
  65.     }
  66. }
  67.  
  68. void get_string(char *str)
  69. {
  70.     if(keyTest(KEY_A))
  71.     {
  72.         if(!key_pressed)
  73.             strcat(str, "A");
  74.         key_pressed = TRUE;
  75.     }
  76.     else if(keyTest(KEY_B))
  77.     {
  78.         if(!key_pressed)
  79.             strcat(str, "B");
  80.         key_pressed = TRUE;
  81.     }
  82.     else if(keyTest(KEY_C))
  83.     {
  84.         if(!key_pressed)
  85.             strcat(str, "C");
  86.         key_pressed = TRUE;
  87.     }
  88.     else if(keyTest(KEY_D))
  89.     {
  90.         if(!key_pressed)
  91.             strcat(str, "D");
  92.         key_pressed = TRUE;
  93.     }
  94.     else if(keyTest(KEY_E))
  95.     {
  96.         if(!key_pressed)
  97.             strcat(str, "E");
  98.         key_pressed = TRUE;
  99.     }
  100.     else if(keyTest(KEY_F))
  101.     {
  102.         if(!key_pressed)
  103.             strcat(str, "F");
  104.         key_pressed = TRUE;
  105.     }
  106.     else if(keyTest(KEY_G))
  107.     {
  108.         if(!key_pressed)
  109.             strcat(str, "G");
  110.         key_pressed = TRUE;
  111.     }
  112.     else if(keyTest(KEY_H))
  113.     {
  114.         if(!key_pressed)
  115.             strcat(str, "H");
  116.         key_pressed = TRUE;
  117.     }
  118.     else if(keyTest(KEY_I))
  119.     {
  120.         if(!key_pressed)
  121.             strcat(str, "I");
  122.         key_pressed = TRUE;
  123.     }
  124.     else if(keyTest(KEY_J))
  125.     {
  126.         if(!key_pressed)
  127.             strcat(str, "J");
  128.         key_pressed = TRUE;
  129.     }
  130.     else if(keyTest(KEY_K))
  131.     {
  132.         if(!key_pressed)
  133.             strcat(str, "K");
  134.         key_pressed = TRUE;
  135.     }
  136.     else if(keyTest(KEY_L))
  137.     {
  138.         if(!key_pressed)
  139.             strcat(str, "L");
  140.         key_pressed = TRUE;
  141.     }
  142.     else if(keyTest(KEY_M))
  143.     {
  144.         if(!key_pressed)
  145.             strcat(str, "M");
  146.         key_pressed = TRUE;
  147.     }
  148.     else if(keyTest(KEY_N))
  149.     {
  150.         if(!key_pressed)
  151.             strcat(str, "N");
  152.         key_pressed = TRUE;
  153.     }
  154.     else if(keyTest(KEY_O))
  155.     {
  156.         if(!key_pressed)
  157.             strcat(str, "O");
  158.         key_pressed = TRUE;
  159.     }
  160.     else if(keyTest(KEY_P))
  161.     {
  162.         if(!key_pressed)
  163.             strcat(str, "P");
  164.         key_pressed = TRUE;
  165.     }
  166.     else if(keyTest(KEY_Q))
  167.     {
  168.         if(!key_pressed)
  169.             strcat(str, "Q");
  170.         key_pressed = TRUE;
  171.     }
  172.     else if(keyTest(KEY_R))
  173.     {
  174.         if(!key_pressed)
  175.             strcat(str, "R");
  176.         key_pressed = TRUE;
  177.     }
  178.     else if(keyTest(KEY_S))
  179.     {
  180.         if(!key_pressed)
  181.             strcat(str, "S");
  182.         key_pressed = TRUE;
  183.     }
  184.     else if(keyTest(KEY_T))
  185.     {
  186.         if(!key_pressed)
  187.             strcat(str, "T");
  188.         key_pressed = TRUE;
  189.     }
  190.     else if(keyTest(KEY_U))
  191.     {
  192.         if(!key_pressed)
  193.             strcat(str, "U");
  194.         key_pressed = TRUE;
  195.     }
  196.     else if(keyTest(KEY_V))
  197.     {
  198.         if(!key_pressed)
  199.             strcat(str, "V");
  200.         key_pressed = TRUE;
  201.     }
  202.     else if(keyTest(KEY_W))
  203.     {
  204.         if(!key_pressed)
  205.             strcat(str, "W");
  206.         key_pressed = TRUE;
  207.     }
  208.     else if(keyTest(KEY_X))
  209.     {
  210.         if(!key_pressed)
  211.             strcat(str, "X");
  212.         key_pressed = TRUE;
  213.     }
  214.     else if(keyTest(KEY_Y))
  215.     {
  216.         if(!key_pressed)
  217.             strcat(str, "Y");
  218.         key_pressed = TRUE;
  219.     }
  220.     else if(keyTest(KEY_Z))
  221.     {
  222.         if(!key_pressed)
  223.             strcat(str, "Z");
  224.         key_pressed = TRUE;
  225.     }
  226.     else if(keyTest(KEY_SPACE))
  227.     {
  228.         if(!key_pressed)
  229.             strcat(str, " ");
  230.         key_pressed = TRUE;
  231.     }
  232.     else if(keyTest(KEY_BACKSPACE))
  233.     {
  234.         if(!key_pressed)
  235.             if(strlen(str) > 0)
  236.                 str[strlen(str) - 1] = 0;
  237.         key_pressed = TRUE;
  238.     }
  239.     else
  240.         key_pressed = FALSE;
  241. }
  242.  
  243. void highscore_eintragen(void)
  244. {
  245.     int i, pos;
  246.     long t;
  247.  
  248.     pos = -1;
  249.     for(i = 0; i < HSCREINTRAEGE; i++)
  250.         if(hscr_eintrag[i].punkte < spieler[0].punkte)
  251.         {
  252.             pos = i;
  253.             break;
  254.         }
  255.  
  256.     if(pos != -1)
  257.     {
  258.         // alte runterkopieren
  259.         for(i = HSCREINTRAEGE - 2; i >= pos; i--)
  260.             hscr_eintrag[i + 1] = hscr_eintrag[i];
  261.  
  262.         hscr_eintrag[pos].punkte = spieler[0].punkte;
  263.         hscr_eintrag[pos].level = spieler[0].level;
  264.         hscr_eintrag[pos].reihen = spieler[0].reihen;
  265.         strcpy(hscr_eintrag[pos].name, "");
  266.         // und Eingabe
  267.         key_pressed = FALSE;
  268.         t = timer();
  269.         do
  270.         {
  271.             if(timer() - t > 0)
  272.             {
  273.                 t = timer();
  274.  
  275.                 get_string(hscr_eintrag[pos].name);
  276.                 putvollbild(hintergrund);
  277.                 put_text(&schrift, screen_width / 4, screen_height / 2 - 1 * schrift.char_h, "HISCORE - ENTER YOUR NAME");
  278.                 put_text(&schrift, screen_width / 4, screen_height / 2 + 1 * schrift.char_w, hscr_eintrag[pos].name);
  279.  
  280.                 Copy2Screen();
  281.             }
  282.         }
  283.         while(!keyTest(KEY_ENTER));
  284.     }
  285. }
  286.  
  287. void highscore_put(void)
  288. {
  289.     int i;
  290.     char txt[80], str[10];
  291.  
  292.     for(i = 0; i < HSCREINTRAEGE; i++)
  293.     {
  294.         itoa(i + 1, str, 10);
  295.         strcpy(txt, str);
  296.         strcat(txt, ". ");
  297.         itoa(hscr_eintrag[i].punkte, str, 10);
  298.         strcat(txt, str);
  299.         strcat(txt, " PUNKTE, ");
  300.         itoa(hscr_eintrag[i].level, str, 10);
  301.         strcat(txt, str);
  302.         strcat(txt, ". LEVEL, ");
  303.         itoa(hscr_eintrag[i].reihen, str, 10);
  304.         strcat(txt, str);
  305.         strcat(txt, " REIHEN, ");
  306.         strcat(txt, hscr_eintrag[i].name);
  307.         put_text(&schrift, screen_width / 2 - strlen(txt) * schrift.char_w / 2, screen_height / 2 - HSCREINTRAEGE * schrift.char_h + i * 2 * schrift.char_h, txt);
  308.     }
  309. }
  310.  
  311. void highscore(void)
  312. {
  313.     long t;
  314.  
  315.     while(keyTest(KEY_ENTER) || keyTest(KEY_ESC) || keyTest(KEY_SPACE))
  316.         ;
  317.  
  318.     highscore_load();
  319.  
  320.     highscore_eintragen();
  321.     while(keyTest(KEY_ENTER))
  322.         ;
  323.  
  324.     t = timer();
  325.     do
  326.     {
  327.         if(timer() - t > 0)
  328.         {
  329.             t = timer();
  330.  
  331.             putvollbild(hintergrund);
  332.             highscore_put();
  333.             Copy2Screen();
  334.         }
  335.     }
  336.     while(!keyTest(KEY_ESC) && !keyTest(KEY_ENTER) && !keyTest(KEY_SPACE));
  337.  
  338. //    if(keyTest(KEY_ESC))
  339. //        ende = TRUE;
  340.  
  341.     highscore_save();
  342.  
  343.     while(keyTest(KEY_ENTER) || keyTest(KEY_ESC) || keyTest(KEY_SPACE))
  344.         ;
  345. }
  346.